package com.nancy.aop.aop;

import com.nancy.aop.aop.jdk.AopHandler;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * All rights Reserved, Designed By guangfeng.zhou
 *
 * @version V1.0
 * @Project: learning-demo
 * @Package: com.nancy.aop
 * @Description: (用一句话描述该文件做什么)
 * @author: guangfeng.zhou
 * @date: 2017/12/5 11:49
 */
public class ProxyTest {

//    @Ignore
    public static void jdkDynamicTest() throws Exception{
        // 代理类
        TestAopImpl target = new TestAopImpl() ;
        //target.printMsg("hello world");
        //target.printMsg2("hello world");

        // 横切处理接口
        InvocationHandler handler = new AopHandler(target) ;
        // Proxy.newProxyInstance 获得代理对象
        TestAop testAop = (TestAop) Proxy.newProxyInstance(target.getClass().getClassLoader(),
                                                           target.getClass().getInterfaces(),
                                                           handler);
        testAop.printMsg("hello world");
        testAop.printMsg2("hello world");

        // 1、接口
        // 2、实现一个 InvocationHandler 就是具体的逻辑

    }

    public static void main(String[] args) throws Exception {
        jdkDynamicTest() ;
    }

}
